/**
 * node脚本记录git每次提交的commit记录
 * */ 

const fs = require('fs');  
const { exec } = require('child_process');  
function replaceAfterStart(str, start) {  
    // 使用正则表达式匹配从'start'开始到字符串结尾的所有内容 只能删除当前行 换行内容需特殊处理 
    const regex = new RegExp(start + '.*', 'g');  
    // 替换匹配到的内容为空字符串  
    return str.replace(regex, '');  
}  
// Git日志命令，这里只获取最近的1个commit作为示例  
// const gitLogCommand = 'git log -n 1 --pretty=format:"%h - %s (%an, %ar)"';  
const gitLogCommand = 'git log -n 1 --pretty=format:"%s (%ar)"';  
  
function appendCommitsToReadme(commits) {  
    // 读取README.md文件内容（如果不存在则创建空文件）  
    fs.readFile('README.md', 'utf8', (err, data) => {  
        if (err && err.code === 'ENOENT') {  
            data = ''; // 如果文件不存在，则创建空字符串  
        }  
        // 将commit记录添加到文件末尾
        const newData = data + '\n* ' + commits;
        // 写入新的README.md文件  
        fs.writeFile('README.md', newData, (err) => {  
            if (err) {  
                console.error('写入文件时发生错误：', err);  
            } else {  
                console.log('Commit记录已成功写入README.md文件');  
            }  
        });  
    });  
}  
  
// 执行Git命令并处理输出  
exec(gitLogCommand, (error, stdout, stderr) => {  
    if (error) {  
        console.error(`执行错误: ${error}`);  
        return;  
    }  
    if (stderr) {  
        console.error(`stderr: ${stderr}`);  
        return;  
    }  
    // 清理输出，去除换行符（如果需要）  
    const commits = stdout.trim();  
    appendCommitsToReadme(commits);  
});